home *** CD-ROM | disk | FTP | other *** search
/ Czech Logic, Card & Gambling Games / Logické hry.iso / hry / Fish Fillets / script / party2 / code.lua next >
Text File  |  2005-07-16  |  23KB  |  657 lines

  1.  
  2. local function setViewShift(model, reference, shift_x, shift_y)
  3.     model_setViewShift(model.index,
  4.         reference.X + shift_x - model.X,
  5.         reference.Y + shift_y - model.Y)
  6. end
  7.  
  8. -- -----------------------------------------------------------------
  9. -- Init
  10. -- -----------------------------------------------------------------
  11. local function prog_init()
  12.     initModels()
  13.     sound_playMusic("music/rybky15.ogg")
  14.     local pokus = getRestartCount()
  15.  
  16.  
  17.     -- -------------------------------------------------------------
  18.     local function prog_init_room()
  19.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  20.  
  21.         room.okno1 = 0
  22.         room.okno2 = 0
  23.         room.okna = 0
  24.         room.uvod = 0
  25.         room.opikniku = random(8) + 1
  26.         repeat
  27.             room.ounave = random(16) + 5
  28.         until math.abs(room.ounave - room.opikniku) > 3
  29.         repeat
  30.             room.oublizeni = random(24) + 9
  31.         until math.abs(room.oublizeni - room.opikniku) > 3 and math.abs(room.oublizeni - room.ounave) > 3
  32.         room.otezkosti = random(500)
  33.  
  34.         return function()
  35.             if (room.okno1 == 0 or room.okno2 == 0) and random(1000) < 25 then
  36.                 if room.okno1 == 0 and room.okno2 == 0 and random(2) == 0 then
  37.                     pom1 = 1
  38.                 elseif room.okno1 == 0 and room.okno2 == 0 then
  39.                     pom1 = 2
  40.                 elseif room.okno1 == 0 then
  41.                     pom1 = 1
  42.                 else
  43.                     pom1 = 2
  44.                 end
  45.                 switch(random(5)){
  46.                     [0] = function()
  47.                         if frkavec.zprava == 0 then
  48.                             frkavec.zprava = pom1
  49.                             switch(pom1){
  50.                                 [1] = function()
  51.                                     room.okno1 = 1
  52.                                 end,
  53.                                 [2] = function()
  54.                                     room.okno2 = 1
  55.                                 end,
  56.                             }
  57.                         end
  58.                     end,
  59.                     [1] = function()
  60.                         if hnat.zprava == 0 then
  61.                             hnat.zprava = pom1
  62.                             switch(pom1){
  63.                                 [1] = function()
  64.                                     room.okno1 = 1
  65.                                 end,
  66.                                 [2] = function()
  67.                                     room.okno2 = 1
  68.                                 end,
  69.                             }
  70.                         end
  71.                     end,
  72.                     [2] = function()
  73.                         if lahev.zprava == 0 then
  74.                             lahev.zprava = pom1
  75.                             switch(pom1){
  76.                                 [1] = function()
  77.                                     room.okno1 = 1
  78.                                 end,
  79.                                 [2] = function()
  80.                                     room.okno2 = 1
  81.                                 end,
  82.                             }
  83.                         end
  84.                     end,
  85.                     [3] = function()
  86.                         if kuk.zprava == 0 then
  87.                             kuk.zprava = pom1
  88.                             switch(pom1){
  89.                                 [1] = function()
  90.                                     room.okno1 = 1
  91.                                 end,
  92.                                 [2] = function()
  93.                                     room.okno2 = 1
  94.                                 end,
  95.                             }
  96.                         end
  97.                     end,
  98.                     [4] = function()
  99.                         if ruka.zprava == 0 then
  100.                             ruka.zprava = pom1
  101.                             switch(pom1){
  102.                                 [1] = function()
  103.                                     room.okno1 = 1
  104.                                 end,
  105.                                 [2] = function()
  106.                                     room.okno2 = 1
  107.                                 end,
  108.                             }
  109.                         end
  110.                     end,
  111.                 }
  112.             end
  113.             if no_dialog() and isReady(small) and isReady(big) then
  114.                 if room.okno1 + room.okno2 == 2 and room.okna < 2 then
  115.                     if room.opikniku > 0 then
  116.                         room.opikniku = room.opikniku - 1
  117.                     end
  118.                     if room.ounave > 0 then
  119.                         room.ounave = room.ounave - 1
  120.                     end
  121.                     if room.oublizeni > 0 then
  122.                         room.oublizeni = room.oublizeni - 1
  123.                     end
  124.                 end
  125.                 if ocel.X >= 23 and room.otezkosti > 0 then
  126.                     room.otezkosti = room.otezkosti - 1
  127.                 end
  128.                 if room.uvod == 0 then
  129.                     room.uvod = 1
  130.                     switch(pokus){
  131.                         [1] = function()
  132.                             pom1 = 1
  133.                         end,
  134.                         [2] = function()
  135.                             pom1 = random(3) + 1
  136.                         end,
  137.                         default = function()
  138.                             pom1 = random(5)
  139.                         end,
  140.                     }
  141.                     if pom1 > 3 then
  142.                         pom1 = 0
  143.                     end
  144.                     adddel(10 + random(10))
  145.                     if pom1 >= 1 then
  146.                         addm(0, "pt2-m-parnik")
  147.                     end
  148.                     if pom1 >= 2 then
  149.                         addv(random(30) + 10, "pt2-v-zmena")
  150.                     end
  151.                     if pom1 >= 3 then
  152.                         planBusy(small, true)
  153.                         addm(5, "pt2-m-hrac")
  154.                         adddel(10)
  155.                         planBusy(small, false)
  156.                     end
  157.                 elseif room.opikniku == 0 then
  158.                     room.opikniku = random(50) + 50
  159.                     addm(20, "pt2-m-piknik"..random(4))
  160.                 elseif room.ounave == 0 then
  161.                     room.ounave = random(50) + 50
  162.                     addv(20, "pt2-v-unaveni"..random(2))
  163.                 elseif room.oublizeni == 0 then
  164.                     room.oublizeni = random(50) + 50
  165.                     addv(20, "pt2-v-nemohou"..random(2))
  166.                 elseif room.otezkosti == 0 then
  167.                     room.otezkosti = -1
  168.                     addv(20, "pt2-v-minule"..random(2))
  169.                 end
  170.             end
  171.             room.okna = room.okno1 + room.okno2
  172.         end
  173.     end
  174.  
  175.     -- -------------------------------------------------------------
  176.     local function prog_init_kuk()
  177.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  178.  
  179.         kuk:setEffect("invisible")
  180.         kuk.zprava = 0
  181.         kuk.strana = 0
  182.         kuk.okno = 0
  183.  
  184.         return function()
  185.             if kuk.zprava >= 1 and kuk.zprava <= 2 then
  186.                 kuk.okno = kuk.zprava
  187.                 kuk.zprava = 3
  188.                 kuk.strana = random(2)
  189.                 switch(random(3)){
  190.                     [0] = function()
  191.                         kuk.anim = "a0a1a2a3a4a5d?1-10a4a3a2a1a0"
  192.                     end,
  193.                     [1] = function()
  194.                         kuk.anim = "a6a7a8a9a10"
  195.                         switch(random(3)){
  196.                             [0] = function()
  197.                                 kuk.anim = kuk.anim.."d?1-10"
  198.                             end,
  199.                             [1] = function()
  200.                                 kuk.anim = kuk.anim.."d?1-4a11a12a13a14a15a16d4a15a14d?5-10a13a12a11"
  201.                             end,
  202.                             [2] = function()
  203.                                 kuk.anim = kuk.anim.."d?1-4a11a12a13a14a15a16d?3-10a15a14a13a12a11"
  204.                             end,
  205.                         }
  206.                         kuk.anim = kuk.anim.."a10a9a8a7a6"
  207.                     end,
  208.                     [2] = function()
  209.                         kuk.anim = "a17a18a19a20a21a22a23d?1-10a22a21a20a19a18a17"
  210.                     end,
  211.                 }
  212.                 resetanim(kuk)
  213.             end
  214.             if kuk.anim == "" or endanim(kuk) then
  215.                 if kuk.zprava == 3 then
  216.                     if kuk.okno == 1 then
  217.                         room.okno1 = 0
  218.                     else
  219.                         room.okno2 = 0
  220.                     end
  221.                     kuk.zprava = 0
  222.                     kuk.okno = 0
  223.                     kuk:setEffect("invisible")
  224.                 end
  225.             else
  226.                 goanim(kuk)
  227.             end
  228.             switch(kuk.okno){
  229.                 [0] = function()
  230.                     setViewShift(kuk, kabina, 3, 1)
  231.                 end,
  232.                 [1] = function()
  233.                     setViewShift(kuk, kabina, 3, 1)
  234.                 end,
  235.                 [2] = function()
  236.                     setViewShift(kuk, kabina, 9, 1)
  237.                 end,
  238.             }
  239.             if kuk.okno == 0 then
  240.                 kuk:setEffect("invisible")
  241.             else
  242.                 if kuk.strana == 1  then
  243.                     kuk:setEffect("reverse")
  244.                 else
  245.                     kuk:setEffect("none")
  246.                 end
  247.             end
  248.             kuk:updateAnim()
  249.         end
  250.     end
  251.  
  252.     -- -------------------------------------------------------------
  253.     local function prog_init_ruka()
  254.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  255.  
  256.         ruka:setEffect("invisible")
  257.         ruka.zprava = 0
  258.         ruka.strana = 0
  259.         ruka.okno = 0
  260.  
  261.         return function()
  262.             if ruka.zprava >= 1 and ruka.zprava <= 2 then
  263.                 ruka.okno = ruka.zprava
  264.                 ruka.zprava = 3
  265.                 ruka.strana = random(2)
  266.                 ruka.anim = ""
  267.                 pom2 = 0
  268.                 for pom1 = 1, random(14) + 2 do
  269.                     ruka.anim = ruka.anim.."a"..pom2
  270.                     if pom2 >= 5 then
  271.                         ruka.anim = ruka.anim.."d1"
  272.                     end
  273.                     if pom2 == 6 then
  274.                         pom2 = 5
  275.                     else
  276.                         pom2 = pom2 + 1
  277.                     end
  278.                 end
  279.                 for pom1 = pom2 - 1, 0, -1 do
  280.                     ruka.anim = ruka.anim.."a"..pom1
  281.                 end
  282.                 resetanim(ruka)
  283.             end
  284.             if ruka.anim == "" or endanim(ruka) then
  285.                 if ruka.zprava == 3 then
  286.                     if ruka.okno == 1 then
  287.                         room.okno1 = 0
  288.                     else
  289.                         room.okno2 = 0
  290.                     end
  291.                     ruka.zprava = 0
  292.                     ruka.okno = 0
  293.                     ruka:setEffect("invisible")
  294.                 end
  295.             else
  296.                 goanim(ruka)
  297.             end
  298.             switch(ruka.okno){
  299.                 [0] = function()
  300.                     setViewShift(ruka, kabina, 3, 1)
  301.                 end,
  302.                 [1] = function()
  303.                     setViewShift(ruka, kabina, 3, 1)
  304.                 end,
  305.                 [2] = function()
  306.                     setViewShift(ruka, kabina, 9, 1)
  307.                 end,
  308.             }
  309.             if ruka.okno == 0 then
  310.                 ruka:setEffect("invisible")
  311.             else
  312.                 if ruka.strana == 1  then
  313.                     ruka:setEffect("reverse")
  314.                 else
  315.                     ruka:setEffect("none")
  316.                 end
  317.             end
  318.             ruka:updateAnim()
  319.         end
  320.     end
  321.  
  322.     -- -------------------------------------------------------------
  323.     local function prog_init_frkavec()
  324.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  325.  
  326.         frkavec:setEffect("invisible")
  327.         frkavec.zprava = 0
  328.         frkavec.strana = 0
  329.         frkavec.okno = 0
  330.         frkavec.frkacka = 0
  331.  
  332.         return function()
  333.             if frkavec.zprava >= 1 and frkavec.zprava <= 2 then
  334.                 frkavec.okno = frkavec.zprava
  335.                 frkavec.zprava = 3
  336.                 frkavec.strana = random(2)
  337.                 frkavec.anim = "a0a1a2a3a4a5"
  338.                 for pom1 = 1, random(5) + 1 do
  339.                     if random(2) == 0 then
  340.                         frkavec.anim = frkavec.anim.."d?5-20a6d6a5"
  341.                     else
  342.                         frkavec.anim = frkavec.anim.."d?5-20a6s[zprava],1s[zprava],2d6s[zprava],1s[zprava],0,a5"
  343.                     end
  344.                 end
  345.                 frkavec.anim = frkavec.anim.."a4a3a2a1a0"
  346.                 resetanim(frkavec)
  347.             end
  348.             if frkavec.anim == "" or endanim(frkavec) then
  349.                 if frkavec.zprava == 3 then
  350.                     if frkavec.okno == 1 then
  351.                         room.okno1 = 0
  352.                     else
  353.                         room.okno2 = 0
  354.                     end
  355.                     frkavec.zprava = 0
  356.                     frkavec.okno = 0
  357.                     frkavec:setEffect("invisible")
  358.                 end
  359.             else
  360.                 goanim(frkavec)
  361.             end
  362.             switch(frkavec.okno){
  363.                 [0] = function()
  364.                     setViewShift(frkavec, kabina, 3, 1)
  365.                 end,
  366.                 [1] = function()
  367.                     setViewShift(frkavec, kabina, 3, 1)
  368.                 end,
  369.                 [2] = function()
  370.                     setViewShift(frkavec, kabina, 9, 1)
  371.                 end,
  372.             }
  373.             if frkavec.okno == 0 then
  374.                 frkavec:setEffect("invisible")
  375.             else
  376.                 if frkavec.strana == 1 then
  377.                     frkavec:setEffect("reverse")
  378.                 else
  379.                     frkavec:setEffect("none")
  380.                 end
  381.             end
  382.             frkavec:updateAnim()
  383.         end
  384.     end
  385.  
  386.     -- -------------------------------------------------------------
  387.     local function prog_init_hnat()
  388.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  389.  
  390.         hnat.drazdit = random(5) + 1
  391.         hnat:setEffect("invisible")
  392.         hnat.zprava = 0
  393.         hnat.strana = 0
  394.         hnat.okno = 0
  395.  
  396.         return function()
  397.             if hnat.zprava >= 1 and hnat.zprava <= 2 then
  398.                 hnat.okno = hnat.zprava
  399.                 hnat.zprava = 3
  400.                 hnat.strana = random(2)
  401.                 if hnat.drazdit > 0 then
  402.                     hnat.drazdit = hnat.drazdit - 1
  403.                     switch(random(4)){
  404.                         [0] = function()
  405.                             hnat.anim = "a0a1a2a3a4a5a6a7d1a6a4"
  406.                         end,
  407.                         [1] = function()
  408.                             hnat.anim = "a0a1a2a3a4a5a6a7a8d1a6a4"
  409.                         end,
  410.                         [2] = function()
  411.                             hnat.anim = "a0a1a2a3a4a5a6a7a8a9d1a8a6a4"
  412.                         end,
  413.                         [3] = function()
  414.                             hnat.anim = "a0a1a2a3a4a5a6a7a8a9a10d1a8a6a4"
  415.                         end,
  416.                     }
  417.                     for pom1 = 1, random(5) do
  418.                         hnat.anim = hnat.anim.."d1a3d1a4"
  419.                     end
  420.                     hnat.anim = hnat.anim.."a3a2a1a0"
  421.                 elseif hnat.drazdit == 0 then
  422.                     hnat.anim = "a0a1a2a3a4a5a6a7a8a9a10a11a12a13"
  423.                     switch(random(3)){
  424.                         [0] = function()
  425.                             hnat.anim = hnat.anim.."a14a15a16a17a18a19a20a21"
  426.                         end,
  427.                         [1] = function()
  428.                             hnat.anim = hnat.anim.."d3a15a17a19a21"
  429.                         end,
  430.                         [2] = function()
  431.                             hnat.anim = hnat.anim.."d7a15a18a21"
  432.                         end,
  433.                     }
  434.                     hnat.drazdit = -random(5) - 2
  435.                 elseif hnat.drazdit < 0 then
  436.                     hnat.drazdit = hnat.drazdit + 1
  437.                     if hnat.drazdit == 0 then
  438.                         hnat.drazdit = random(5) + 1
  439.                     end
  440.                 end
  441.                 resetanim(hnat)
  442.             end
  443.             if hnat.anim == "" or endanim(hnat) then
  444.                 if hnat.zprava == 3 then
  445.                     if hnat.okno == 1 then
  446.                         room.okno1 = 0
  447.                     else
  448.                         room.okno2 = 0
  449.                     end
  450.                     hnat.zprava = 0
  451.                     hnat.okno = 0
  452.                 end
  453.             else
  454.                 goanim(hnat)
  455.             end
  456.             switch(hnat.okno){
  457.                 [0] = function()
  458.                     setViewShift(hnat, kabina, 3, 1)
  459.                 end,
  460.                 [1] = function()
  461.                     setViewShift(hnat, kabina, 3, 1)
  462.                 end,
  463.                 [2] = function()
  464.                     setViewShift(hnat, kabina, 9, 1)
  465.                 end,
  466.             }
  467.             if hnat.okno == 0 then
  468.                 hnat:setEffect("invisible")
  469.             else
  470.                 if hnat.strana == 1 then
  471.                     hnat:setEffect("reverse")
  472.                 else
  473.                     hnat:setEffect("none")
  474.                 end
  475.             end
  476.             hnat:updateAnim()
  477.         end
  478.     end
  479.  
  480.     -- -------------------------------------------------------------
  481.     local function prog_init_lahev()
  482.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  483.  
  484.         lahev:setEffect("invisible")
  485.         lahev.zprava = 0
  486.         lahev.strana = 0
  487.         lahev.okno = 0
  488.  
  489.         return function()
  490.             if lahev.zprava >= 1 and lahev.zprava <= 2 then
  491.                 lahev.okno = lahev.zprava
  492.                 lahev.zprava = 3
  493.                 lahev.strana = random(2)
  494.                 lahev.anim = "a0a1a2a3a4a5a6a7a8"
  495.                 for pom1 = 1, random(4) do
  496.                     for pom1 = 1, random(3) + 1 do
  497.                         lahev.anim = lahev.anim.."a9a10"
  498.                     end
  499.                     lahev.anim = lahev.anim.."a11a12a13a14a9d?1-6"
  500.                 end
  501.                 lahev.anim = lahev.anim.."a8a7a6a5a4a3a2a1a0"
  502.                 resetanim(lahev)
  503.             end
  504.             if lahev.anim == "" or endanim(lahev) then
  505.                 if lahev.zprava == 3 then
  506.                     if lahev.okno == 1 then
  507.                         room.okno1 = 0
  508.                     else
  509.                         room.okno2 = 0
  510.                     end
  511.                     lahev.zprava = 0
  512.                     lahev.okno = 0
  513.                 end
  514.             else
  515.                 goanim(lahev)
  516.             end
  517.             switch(lahev.okno){
  518.                 [0] = function()
  519.                     setViewShift(lahev, kabina, 3, 1)
  520.                 end,
  521.                 [1] = function()
  522.                     setViewShift(lahev, kabina, 3, 1)
  523.                 end,
  524.                 [2] = function()
  525.                     setViewShift(lahev, kabina, 9, 1)
  526.                 end,
  527.             }
  528.             if lahev.okno == 0 then
  529.                 lahev:setEffect("invisible")
  530.             else
  531.                 if lahev.strana == 1 then
  532.                     lahev:setEffect("reverse")
  533.                 else
  534.                     lahev:setEffect("none")
  535.                 end
  536.             end
  537.             lahev:updateAnim()
  538.         end
  539.     end
  540.  
  541.     -- -------------------------------------------------------------
  542.     local function prog_init_frk()
  543.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  544.  
  545.         frk:setEffect("invisible")
  546.  
  547.         return function()
  548.             frk.okno = 0
  549.             if frkavec.frkacka > 0 then
  550.                 if frkavec.strana == 0 and frkavec.okno == 2 or frkavec.strana == 1 and frkavec.okno == 1 then
  551.                     frk.okno = 3 - frkavec.okno
  552.                     frk.afaze = frkavec.frkacka - 1
  553.                 end
  554.             end
  555.             switch(frk.okno){
  556.                 [0] = function()
  557.                     setViewShift(frk, kabina, 3, 1)
  558.                 end,
  559.                 [1] = function()
  560.                     setViewShift(frk, kabina, 3, 1)
  561.                 end,
  562.                 [2] = function()
  563.                     setViewShift(frk, kabina, 9, 1)
  564.                 end,
  565.             }
  566.             if frk.okno == 0 then
  567.                 frk:setEffect("invisible")
  568.             else
  569.                 if frk.strana == 1 then
  570.                     frk:setEffect("reverse")
  571.                 else
  572.                     frk:setEffect("none")
  573.                 end
  574.             end
  575.         end
  576.     end
  577.     -- -------------------------------------------------------------
  578.     local function prog_init_glass1()
  579.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  580.  
  581.         local glasses = {glass1, glass_plate}
  582.         for pom1, glass in pairs(glasses) do
  583.             glass.wav = 0
  584.         end
  585.  
  586.         return function()
  587.             for pom1, glass in pairs(glasses) do
  588.                 pom2 = glass.wav
  589.                 if glass.dir ~= dir_no then
  590.                     if pom2 == 0 then
  591.                         pom2 = 9
  592.                     elseif pom2 <= 6 then
  593.                         pom2 = pom2 + 6
  594.                     end
  595.                 end
  596.                 if pom2 == 0 then
  597.                     glass.afaze = 0
  598.                 else
  599.                     pom2 = pom2 - 1
  600.                     glass.afaze = 2 - math.mod(math.floor(pom2 / 3), 2)
  601.                 end
  602.                 glass.wav = pom2
  603.                 glass:updateAnim()
  604.             end
  605.         end
  606.     end
  607.  
  608.     -- --------------------
  609.     local update_table = {}
  610.     local subinit
  611.     subinit = prog_init_room()
  612.     if subinit then
  613.         table.insert(update_table, subinit)
  614.     end
  615.     subinit = prog_init_kuk()
  616.     if subinit then
  617.         table.insert(update_table, subinit)
  618.     end
  619.     subinit = prog_init_ruka()
  620.     if subinit then
  621.         table.insert(update_table, subinit)
  622.     end
  623.     subinit = prog_init_frkavec()
  624.     if subinit then
  625.         table.insert(update_table, subinit)
  626.     end
  627.     subinit = prog_init_hnat()
  628.     if subinit then
  629.         table.insert(update_table, subinit)
  630.     end
  631.     subinit = prog_init_lahev()
  632.     if subinit then
  633.         table.insert(update_table, subinit)
  634.     end
  635.     subinit = prog_init_frk()
  636.     if subinit then
  637.         table.insert(update_table, subinit)
  638.     end
  639.     subinit = prog_init_glass1()
  640.     if subinit then
  641.         table.insert(update_table, subinit)
  642.     end
  643.     return update_table
  644. end
  645. local update_table = prog_init()
  646.  
  647.  
  648. -- -----------------------------------------------------------------
  649. -- Update
  650. -- -----------------------------------------------------------------
  651. function prog_update()
  652.     for key, subupdate in pairs(update_table) do
  653.         subupdate()
  654.     end
  655. end
  656.  
  657.